iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 8
0
DevOps

從.Net工程師的角度來看DevOps - 到底能夠幫助什麼 之 再戰江湖系列 第 8

[iThome第8屆鐵人賽 14]程式碼品質 - 介紹篇

  • 分享至 

  • xImage
  •  

我曾經聽過一個笑話,一個人到一家公司面試,面試官問他:「請問你如何保證/保持你的程式碼品質?」

這個年輕人回答:「我...我會在發現bug的時候把問題加班修好」。

其實這個有點悲哀,也說明了為什麼軟體工程師時常需要加班,因為當軟體越寫越複雜的時候,要保持程式的品質是需要一些事情,但是這些事情是什麼?有沒有可能進入到我們日常環境裡?

這個就是接下來會介紹的部分,我們如何透過做CI把程式碼品質要做的事情整合進來。

同步發表於我的部落格:http://blog.alantsai.net/2016/12/devopsSeries-codeQuality-Intro.html (部落格的格式會漂亮一些)

如何保持程式碼品質?

保持程式碼品質其實本身就是一個很大的主題,在這個系列裡面不會介紹非常詳細,但是會針對幾個比較容易執行並且能夠整併到我們CI裡面的來做介紹。

基本上,有兩方面的程式碼品質:

  1. 需要做事情的 - 寫測試
  2. 工具分析型的 - 程式碼分析

透過測試保證程式碼品質

測試有很多種,最常聽到的應該就是單元測試(Unit Test)。

單元測試簡單的說是一個最小單元是否符合撰寫的邏輯。但是,一個最小單元裡面可能有不同的路徑,測試到底包含了多少路徑會影響到這個測試的完整性。

舉例來說,一個簡單的方法,有個if邏輯判斷,如果測試只測試了true的部分,但是沒有測試false的部分,只能保證說true是沒問題的,但是false那段完全沒有涵蓋到。因此,涵蓋率只有50%

所以,我們的測試涵蓋率到底多少,能說明這個測試的完整性有多少。

這個部分,我們將會透過使用一個Open source的專案叫做OpenCover來做這方面的檢測。

不需要每一個方法的涵蓋率都要100%
雖然說涵蓋率越高越好,但是並不代表所有涵蓋率都要100%,也不可能都到100%,所以這個參考就好。

程式碼分析

像在做資安掃瞄的時候一樣,有所謂的白箱測試,在程式碼品質的部分也有這種類型的工具,而這種工具又有分兩種:

  1. 程式碼風格分析 - 這個其實不和程式邏輯有關,而是和寫程式的風格有關。風格指的是,例如每一行內容要空幾行,怎麼寫註解之類。最出名的工具就是 StyleCop

  2. 程式碼分析 (static analyzer) - 這個其實和跑白箱測試是一樣概念,分析程式並且把有些寫法有問題的標註出來。例如,方法參數沒有用到這種,甚至Sql injection檢查。最出名的工具 就是 FxCop,再後來,整合進去到後來Visual studio 裡面的Code Analysis

這兩個最大不同之處在於,程式碼風格分析是對 原始碼做分析,程式碼分析 則是對 編譯過的dll做分析

結語

在這篇我們介紹了可以透過什麼工具來保持程式碼的品質,在接下來的章節裡面,我們將會開始介紹怎麼把這些工具整合進去到我們的build script裡面

下篇,先從測試涵蓋率,OpenCover開始介紹


上一篇
[iThome第8屆鐵人賽 13]執行測試 4 - 重構
下一篇
[iThome第8屆鐵人賽 15]OpenCover 介紹篇
系列文
從.Net工程師的角度來看DevOps - 到底能夠幫助什麼 之 再戰江湖30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言